<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>类</title>
    <style>
        *{margin: 0;padding: 0;list-style-type: none;}
    </style>
</head>
<body>
    <div></div>
    <script>
        /*
            es5通过 new function()创建构造函数，模拟类的概念
            es6新增了class类(语法类)，它的绝大部分功能。es5的构造函数都能实现。es6的class类写法更加清晰，更接近传统的面向对象语言

            class关键字 ：声明一个类            与let/const 一样具备变量提升，不能重复声明的相同的类
        */

        /*
            面向对象：提高开发效率，写得更灵活，可维护性更高
                特性：
                    封装性:  封装功能，提供使用功能的接口
                    继承性:  B继承A的所有功能，并且可以在B身上进行拓展
                    多态:   参数不同，反应不同(处理不同)
        */
    class Doll {
            //constructor指向类自身(Doll类自身)
            constructor(){

            }
            //添加一些功能
            dance(){
                console.log("添加跳舞的功能");
            }

            //静态方法  static关键字指定的方法。不会被添加到类prototype原型对象中，需要通过类自身来调用
            static eat(){

            }
       }

       //执行类：class类只能用new来执行
       let luoli = new Doll()
       //实例的对象可以使用类的所有方法
       luoli.dance()
    </script>
</body>
</html>